package com.ghy.controller;


import com.ghy.pojo.User;
import com.ghy.service.UserService;
import com.ghy.utils.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RequestMapping("user")
@RestController
@CrossOrigin
public class UserController {
    /**
     * 登录需求
     * 地址: /user/login
     * 方式: post
     * 参数:
     *    {
     *     "username":"zhangsan", //用户名
     *     "userPwd":"123456"     //明文密码
     *    }
     * 返回:
     *   {
     *    "code":"200",         // 成功状态码
     *    "message":"success"   // 成功状态描述
     *    "data":{
     *         "token":"... ..." // 用户id的token
     *     }
     *  }
     *
     * 大概流程:
     *    1. 账号进行数据库查询 返回用户对象
     *    2. 对比用户密码(md5加密)
     *    3. 成功,根据userId生成token -> map key=token value=token值 - result封装
     *    4. 失败,判断账号还是密码错误,封装对应的枚举错误即可
     */

    @Autowired
    private UserService userService;
    //检查用户名和密码是否相等
    @PostMapping("login")
    public Result login(@RequestBody User user) {
         Result result =  userService.login(user);
         System.out.println("result = " + result );
         return   result;
    }
    //token请求头,后端根据token请求头获取登录用户的详细信息并响应给客户端进行存储
    @GetMapping("getUserInfo")
    public Result getUserInfo(@RequestHeader String token) {
        Result result =  userService.getUserInfo(token);
        System.out.println("result = " + result );
        return   result;
    }

    //检查用户名是否存在
    @PostMapping("checkUserName")
    public  Result checkUserName(String username) {
        Result result = userService.checkUserName(username);
        return   result;
    }

    //注册账号
    @PostMapping("regist")
    public Result regist(@RequestBody User user) {
        Result result = userService.regist(user);
        return   result;
    }
    //token是否过期
    @GetMapping("checkLogin")
    public  Result checkLogin(@RequestHeader String token) {
        Result result = userService.checkLogin(token);
        return result;
    }
}
